Development of application programs sometimes involves the use of visual modeling tools such as Rational Rose or Microsoft Visual Studio to perform a front end design analysis and then developers create a corresponding software architecture and design. The front end analysis is performed to identify and define application requirements as well as to determine functionality to be supported by an application program.
In general, application programs are developed based upon the application functionality requirements derived during the front end design analysis. For example, the developer converts a high level architecture and design derived during the front end analysis into low level design including classes, objects, relationships, inheritances, methods and attributes developed using the visual modeling tool. The low level design is then converted into corresponding metadata that defines properties of software to be generated by a code generator. Source code generators use the metadata to generate source code for client applications. That is, based on a metadata specification, there exist conventional software code generator programs that can operate to automatically generate software code (e.g., C++ or Java source code) for use by software applications under development. A developer can then reference (e.g., inherit or otherwise include) the automatically generated source code within the code (e.g., a main program) of the software application under development. The collection of automatically generated code to the developer created code can then be compiled into an executable (i.e., machine code) program.
Modifying contents of metadata (or information that is used to generate the metadata) is one way of implementing code modifications in a corresponding client application because, for each software build (e.g., nightly), the code generator automatically generates new up-to-date software code based on the updated metadata. Another way of implementing code modifications is to directly (e.g., by hand) modify or edit the software source code generated by the code generator instead of initiating modifications to the metadata itself.